home *** CD-ROM | disk | FTP | other *** search
/ Ahoy 1985 February / Ahoy_Magazine_85-02_1985_Double_L.d64 / sprite cntrlr (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  141 lines

  1. 1 rem=-=-=-=-=-=-=-=-=-=-=-=
  2. 2 rem=  sprite controller  =
  3. 3 rem=-=-=-=-=-=-=-=-=-=-=-=
  4. 4 rem
  5. 5 rem sprite data must already
  6. 6 rem be in memory.
  7. 9 rem
  8. 10 def fnsb(n)=peek(mm) or 2^n
  9. 20 def fnrb(n)=peek(mm) and (255-2^n)
  10. 30 def fngb(n)=-((pm and 2^n)>0)
  11. 40 vv=53248 :rem  vic address
  12. 490 end
  13. 495 rem=-=-=-=-=-=-=-=-=-=-=-=
  14. 496 rem= set sprite pointer  =
  15. 497 rem=   input: sn,bk      =
  16. 498 rem=-=-=-=-=-=-=-=-=-=-=-=
  17. 500 poke 2040+sn,bk
  18. 510 return
  19. 595 rem=-=-=-=-=-=-=-=-=-=-=-=
  20. 596 rem=  set x coordinate   =
  21. 597 rem=   input: sn,xx      =
  22. 598 rem=-=-=-=-=-=-=-=-=-=-=-=
  23. 600 mm=vv+16 : x0=xx
  24. 610 if xx<256 then poke mm,fnrb(sn):goto 630
  25. 620 x0=xx-256 : poke mm,fnsb(sn)
  26. 630 poke vv+sn*2,x0
  27. 640 return
  28. 695 rem=-=-=-=-=-=-=-=-=-=-=-=
  29. 696 rem=  set y coordinate   =
  30. 697 rem=   input: sn,yy      =
  31. 698 rem=-=-=-=-=-=-=-=-=-=-=-=
  32. 700 poke vv+sn*2+1,yy
  33. 710 return
  34. 795 rem=-=-=-=-=-=-=-=-=-=-=-=
  35. 796 rem=     set color       =
  36. 797 rem=   input: sn,cc      =
  37. 798 rem=-=-=-=-=-=-=-=-=-=-=-=
  38. 800 poke vv+39+sn,cc
  39. 810 return
  40. 895 rem=-=-=-=-=-=-=-=-=-=-=-=
  41. 896 rem=  turn sprite on     =
  42. 897 rem=   input: sn         =
  43. 898 rem=-=-=-=-=-=-=-=-=-=-=-=
  44. 900 mm=vv+21
  45. 910 poke mm,fnsb(sn)
  46. 920 return
  47. 995 rem=-=-=-=-=-=-=-=-=-=-=-=
  48. 996 rem=  turn sprite off    =
  49. 997 rem=   input: sn         =
  50. 998 rem=-=-=-=-=-=-=-=-=-=-=-=
  51. 1000 mm=vv+21
  52. 1010 poke mm,fnrb(sn)
  53. 1020 return
  54. 1095 rem=-=-=-=-=-=-=-=-=-=-=-=
  55. 1096 rem= x expansion on      =
  56. 1097 rem=   input: sn         =
  57. 1098 rem=-=-=-=-=-=-=-=-=-=-=-=
  58. 1100 mm=vv+29 :poke mm,fnsb(sn)
  59. 1110 return
  60. 1195 rem=-=-=-=-=-=-=-=-=-=-=
  61. 1196 rem=  x expansion off  =
  62. 1197 rem=   input: sn       =
  63. 1198 rem=-=-=-=-=-=-=-=-=-=-=
  64. 1200 mm=vv+29 :poke mm,fnrb(sn)
  65. 1210 return
  66. 1295 rem=-=-=-=-=-=-=-=-=-=-=
  67. 1296 rem=  y expansion on   =
  68. 1297 rem=-=-=-=-=-=-=-=-=-=-=
  69. 1300 mm=vv+23 :poke mm,fnsb(sn)
  70. 1310 return
  71. 1395 rem=-=-=-=-=-=-=-=-=-=-=
  72. 1396 rem=  y expansion off  =
  73. 1397 rem=   input: sn       =
  74. 1398 rem=-=-=-=-=-=-=-=-=-=-=
  75. 1400 mm=vv+23 :poke mm,fnrb(sn)
  76. 1410 return
  77. 1495 rem=-=-=-=-=-=-=-=-=-=-=
  78. 1496 rem= multi-color mode  =
  79. 1497 rem=   input: sn       =
  80. 1498 rem=-=-=-=-=-=-=-=-=-=-=
  81. 1500 mm=vv+28 :poke mm,fnsb(sn)
  82. 1510 return
  83. 1595 rem=-=-=-=-=-=-=-=-=-=-=
  84. 1596 rem=  hi-res mode      =
  85. 1597 rem=   input: sn       =
  86. 1598 rem=-=-=-=-=-=-=-=-=-=-=
  87. 1600 mm=vv+28 :poke mm,fnrb(sn)
  88. 1610 return
  89. 1695 rem-=-=-=-=-=-=-=-=-=-=-=-=
  90. 1696 rem define mc colors 1&2  =
  91. 1697 rem   input: c1,c2        =
  92. 1698 rem-=-=-=-=-=-=-=-=-=-=-=-=
  93. 1700 poke vv+37,c1:poke vv+38,c2
  94. 1710 return
  95. 1794 rem-=-=-=-=-=-=-=-=-=-=-=-=
  96. 1795 rem any spr/spr collision =
  97. 1796 rem   input: none         =
  98. 1797 rem  output: pm=0 if none =
  99. 1798 rem-=-=-=-=-=-=-=-=-=-=-=-=
  100. 1800 pm=peek(vv+30)
  101. 1810 return
  102. 1820 if ca and cb then sflg=-1
  103. 1830 return
  104. 1894 rem-=-=-=-=-=-=-=-=-=-=-=-=
  105. 1895 rem any spr/bkgd collision=
  106. 1896 rem   input: none         =
  107. 1897 rem  output: pm=0 if none =
  108. 1898 rem-=-=-=-=-=-=-=-=-=-=-=-=
  109. 1900 pm=peek(vv+31)
  110. 1910 return
  111. 1994 rem-=-=-=-=-=-=-=-=-=-=-=-=
  112. 1995 rem spr priority < bkgd   =
  113. 1996 rem   input: sn           =
  114. 1997 rem-=-=-=-=-=-=-=-=-=-=-=-=
  115. 2000 mm=vv+27 : poke mm,fnsb(sn)
  116. 2010 return
  117. 2094 rem-=-=-=-=-=-=-=-=-=-=-=-=
  118. 2095 rem spr priority > bkgd   =
  119. 2096 rem   input: sn           =
  120. 2097 rem-=-=-=-=-=-=-=-=-=-=-=-=
  121. 2100 mm=vv+27 : poke mm,fnrb(sn)
  122. 2110 return
  123. 2194 rem-=-=-=-=-=-=-=-=-=-=-=-=
  124. 2195 rem spr-a//spr-b collide? =
  125. 2196 rem   input: sa,sb        =
  126. 2197 rem output:sflg=0 if not  =
  127. 2198 rem-=-=-=-=-=-=-=-=-=-=-=-=
  128. 2200 pm=peek(vv+30) : sflg=0
  129. 2210 ca=fngb(sa) : cb=fngb(sb)
  130. 2220 if ca and cb then sflg=-1
  131. 2230 return
  132. 2294 rem-=-=-=-=-=-=-=-=-=-=-=-=
  133. 2295 rem spr-n//bkgd collide?  =
  134. 2296 rem   input: sn           =
  135. 2297 rem output:bflg=0 if not  =
  136. 2298 rem-=-=-=-=-=-=-=-=-=-=-=-=
  137. 2300 pm=peek(vv+31)
  138. 2310 ca=fngb(sn) : bflg=0
  139. 2320 if ca then bflg=-1
  140. 2330 return
  141.